void Histogram (ImSize, NofGV, MaxAcc, Sqrt, Image, Histo)
int  ImSize, NofGV, MaxAcc, Sqrt;
BYTE ** Image;
int  * Histo;
{
   int  r,c, gv, Max;

   for  (gv=0; gv<NofGV; gv++)  Histo[gv] = 0;

   Max=0;
   for (r=0; r<ImSize; r++) {
      for (c=0; c<ImSize; c++) {
         gv = Image[r][c];
         Histo[gv] ++;
         if (Histo[gv] > Max)  Max = Histo[gv];
   }  }

   if (Sqrt) {
      for (gv=0; gv<NofGV; gv++)
         if (Histo[gv])
            Histo[gv] = (int) sqrt ((float)Histo[gv]);
      Max = (int) sqrt ((float)Max);
   }

   for (gv=0; gv<NofGV; gv++)
      Histo[gv] = (int) (((float)Histo[gv] * MaxAcc) / Max);
}
